Many companies and other organizations operate computer networks that interconnect numerous computing systems to support their operations, such as with the computing systems being co-located (e.g., as part of a local network) or instead located in multiple distinct geographical locations (e.g., connected via one or more private or public intermediate networks). For example, data centers housing significant numbers of interconnected computing systems have become commonplace, such as private data centers that are operated by and on behalf of a single organization, and public data centers that are operated by service providers to provide computing resources to customers of the service providers. Some public data center operators provide network access, power, and secure installation facilities for hardware owned by various customers, while other public data center operators provide full service facilities that also include hardware resources made available for use by their customers.
In general, a network is a collection of compute devices (e.g., servers), storage devices, switches, routers, etc. Each such device is assigned an internet protocol (IP) address by which packets can be sent to that device. Managing the IP addresses of a network can be particularly troublesome in a service provider's network that includes thousands of servers on which virtual machine instances are created and used by customers of the service provider. During normal daily operation of the provider network, virtual machine instances are created and deactivated continually based on the needs of the customers. Each time a new virtual machine instance is created, an IP address is assigned to that instance and each time a virtual machine instance is deactivated, the IP address can be released back to a pool of IP addresses for future use by another virtual machine instance.